package com.ship.dispatch.bean.shipBusiness;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ship.common.core.base.BaseBean;
import com.ship.common.core.base.Joinable;
import com.ship.common.core.mapping.Label;
import com.ship.common.core.mapping.SearchItem;
import com.ship.common.core.mapping.TableColumn;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.Date;

@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sm_ship_report")
public class SmShipReport extends BaseBean implements Joinable {

    /**
     * LNG consumption for
     */
    @TableField("lng_consumption_type")
    @ApiModelProperty(value = "LNG consumption for")
    private String lngConsumptionType;

    /**
     * callsign
     */
    @TableField("callsign")
    @ApiModelProperty(value = "callsign")
    private String callsign;

    /**
     * flag
     */
    @TableField("flag")
    @ApiModelProperty(value = "flag")
    private String flag;

    /**
     * 附件id
     */
    @TableField("file_record_id")
    @ApiModelProperty(value = "附件id")
    private Long fileRecordId;

    /**
     * 船舶名称
     */
    @Label(value="Vessel name")
    @SearchItem
    @TableColumn
    @TableField("vessel_name")
    @ApiModelProperty(value = "船舶名称")
    private String vesselName;

    /**
     * 航次号
     */
    @Label(value="Voyage number")
    @SearchItem
    @TableColumn
    @TableField("voyage_number")
    @ApiModelProperty(value = "航次号")
    private String voyageNumber;

    /**
     * 日期
     */
    @Label(value="Date")
    @SearchItem
    @TableColumn
    @TableField("ship_report_date")
    @JsonFormat(timezone = "GMT+8", pattern = "dd/MM/yyyy")
    @ApiModelProperty(value = "日期")
    private Date shipReportDate = null;

    /**
     * 本地时间
     */
    @Label(value="LT")
    @TableColumn
    @TableField("ship_report_lt")
    @ApiModelProperty(value = "本地时间")
    private String shipReportLt;

    /**
     * UTC 时间
     */
    @Label(value="UTC")
    @TableColumn
    @TableField("ship_report_utc")
    @ApiModelProperty(value = "UTC 时间")
    private String shipReportUtc;

    /**
     * 经度
     */
    @Label(value="Position LAT.")
    @TableColumn
    @TableField("position_lat")
    @ApiModelProperty(value = "经度")
    private String positionLat;

    /**
     * 纬度
     */
    @Label(value="Position LONG.")
    @TableColumn
    @TableField("position_long")
    @ApiModelProperty(value = "纬度")
    private String positionLong;

    /**
     * Observed distance since last report（N.Miles）
     */
    @Label(value="Observed distance since last report（N.Miles）")
    @TableColumn
    @TableField("last_report_miles")
    @ApiModelProperty(value = "Observed distance since last report（N.Miles）")
    private Integer lastReportMiles = null;

    /**
     * Steaming Time since last report
     */
    @Label(value="Steaming Time since last report")
    @TableColumn
    @TableField("steaming_time")
    @ApiModelProperty(value = "Steaming Time since last report")
    private String steamingTime;

    /**
     * Total distance since FAOP（N.Miles）
     */
    @Label(value="Total distance since FAOP（N.Miles）")
    @TableColumn
    @TableField("faop_miles")
    @ApiModelProperty(value = "Total distance since FAOP（N.Miles）")
    private Integer faopMiles = null;

    /**
     * Distance to go - To Next Port（N.Miles）
     */
    @Label(value="Distance to go - To Next Port（N.Miles）")
    @TableColumn
    @TableField("next_port_miles")
    @ApiModelProperty(value = "Distance to go - To Next Port（N.Miles）")
    private String nextPortMiles;

    /**
     * Distance to go - To Final destination（N.Miles）
     */
    @Label(value="Distance to go - To Final destination（N.Miles）")
    @TableColumn
    @TableField("final_destination_miles")
    @ApiModelProperty(value = "Distance to go - To Final destination（N.Miles）")
    private String finalDestinationMiles;

    /**
     * Average speed since last report（Knots）
     */
    @Label(value="Average speed since last report（Knots）")
    @TableColumn
    @TableField("last_report_knots")
    @ApiModelProperty(value = "Average speed since last report（Knots）")
    private BigDecimal lastReportKnots = null;

    /**
     * Speed required to make scheduled ETA（Knots）
     */
    @Label(value="Speed required to make scheduled ETA（Knots）")
    @TableColumn
    @TableField("scheduled_eta_knots")
    @ApiModelProperty(value = "Speed required to make scheduled ETA（Knots）")
    private String scheduledEtaKnots;

    /**
     * Engine RPM since last noon report（RPM）
     */
    @Label(value="Engine RPM since last noon report（RPM）")
    @TableColumn
    @TableField("engine_rpm")
    @ApiModelProperty(value = "Engine RPM since last noon report（RPM）")
    private BigDecimal engineRpm = null;

    /**
     * Engine power（KW）
     */
    @Label(value="Engine power（KW）")
    @TableColumn
    @TableField("engine_power_kw")
    @ApiModelProperty(value = "Engine power（KW）")
    private Integer enginePowerKw = null;

    /**
     * Engine torque（KN-m）
     */
    @Label(value="Engine torque（KN-m）")
    @TableColumn
    @TableField("engine_torque_kn")
    @ApiModelProperty(value = "Engine torque（KN-m）")
    private Integer engineTorqueKn = null;

    /**
     * Pct. Slip
     */
    @Label(value="Pct. Slip")
    @TableColumn
    @TableField("pct_slip")
    @ApiModelProperty(value = "Pct. Slip")
    private BigDecimal pctSlip = null;

    /**
     * Consumption since last report - F.O.（tonnes）
     */
    @Label(value="Consumption since last report - F.O.（tonnes）")
    @TableColumn
    @TableField("consumption_fo")
    @ApiModelProperty(value = "Consumption since last report - F.O.（tonnes）")
    private Integer consumptionFo = null;

    /**
     * Consumption since last report-L. S. F. O.（tonnes）
     */
    @Label(value="Consumption since last report-L. S. F. O.（tonnes）")
    @TableColumn
    @TableField("consumption_lsfo")
    @ApiModelProperty(value = "Consumption since last report-L. S. F. O.（tonnes）")
    private String consumptionLsfo = null;

    /**
     * Consumption since last report-L.S.M.D.O（tonnes）
     */
    @Label(value="Consumption since last report-L.S.M.D.O.（tonnes）")
    @TableColumn
    @TableField("consumption_lsmdo")
    @ApiModelProperty(value = "Consumption since last report-L.S.M.D.O（tonnes）")
    private String consumptionLsmdo = null;

    /**
     * Consumption since last report- G.O.（tonnes）
     */
    @Label(value="Consumption since last report- G.O.（tonnes）")
    @TableColumn
    @TableField("consumption_go")
    @ApiModelProperty(value = "Consumption since last report- G.O.（tonnes）")
    private Integer consumptionGo = null;

    /**
     * Consumption since last report-L.S.G.O.（tonnes）
     */
    @Label(value="Consumption since last report-L.S.G.O.（tonnes）")
    @TableColumn
    @TableField("consumption_lsgo")
    @ApiModelProperty(value = "Consumption since last report-L.S.G.O.（tonnes）")
    private BigDecimal consumptionLsgo = null;

    /**
     * Remaining on board - F.O.（tonnes）
     */
    @Label(value="Remaining on board - F.O.（tonnes）")
    @TableColumn
    @TableField("remaining_fo")
    @ApiModelProperty(value = "Remaining on board - F.O.（tonnes）")
    private Integer remainingFo = null;

    /**
     * Remaining on board-L. S. F. O.（tonnes）
     */
    @Label(value="Remaining on board-L. S. F. O.（tonnes）")
    @TableColumn
    @TableField("remaining_lsfo")
    @ApiModelProperty(value = "Remaining on board-L. S. F. O.（tonnes）")
    private String remainingLsfo = null;

    /**
     * Remaining on board-L.S.M.D.O.（tonnes）
     */
    @Label(value="Remaining on board-L.S.M.D.O.（tonnes）")
    @TableColumn
    @TableField("remaining_lsmdo")
    @ApiModelProperty(value = "Remaining on board-L.S.M.D.O.（tonnes）")
    private String remainingLsmdo = null;

    /**
     * Remaining on board- G.O.（tonnes）
     */
    @Label(value="Remaining on board- G.O.（tonnes）")
    @TableColumn
    @TableField("remaining_go")
    @ApiModelProperty(value = "Remaining on board- G.O.（tonnes）")
    private Integer remainingGo = null;

    /**
     * Remaining on board-L.S.G.O.（tonnes）
     */
    @Label(value="Remaining on board-L.S.G.O.（tonnes）")
    @TableColumn
    @TableField("remaining_lsgo")
    @ApiModelProperty(value = "Remaining on board-L.S.G.O.（tonnes）")
    private BigDecimal remainingLsgo = null;

    /**
     * Remaining on board-LNG（m3）
     */
    @Label(value="Remaining on board-LNG（m³）")
    @TableColumn
    @TableField("remaining_lng")
    @ApiModelProperty(value = "Remaining on board-LNG（m3）")
    private BigDecimal remainingLng = null;

    /**
     * LNG consumption since last report (by flowmeter)（m3）
     */
    @Label(value="LNG consumption since last report (by flowmeter)（m³）")
    @TableColumn
    @TableField("consumption_flowmeter")
    @ApiModelProperty(value = "LNG consumption since last report (by flowmeter)（m3）")
    private BigDecimal consumptionFlowmeter = null;

    /**
     * LNG consumption for
     */
    @Label(value="LNG consumption for")
    @TableColumn
    @TableField("lng_consumption_for")
    @ApiModelProperty(value = "LNG consumption for")
    private String lngConsumptionFor;

    /**
     * Fuel oil equivalent factor
     */
    @Label(value="Fuel oil equivalent factor")
    @TableColumn
    @TableField("fuel_oil_factor")
    @ApiModelProperty(value = "Fuel oil equivalent factor")
    private BigDecimal fuelOilFactor = null;

    /**
     * LNG fuel equivalent（tonnes）
     */
    @Label(value="LNG fuel equivalent（tonnes）")
    @TableColumn
    @TableField("lng_fuel_equivalent")
    @ApiModelProperty(value = "LNG fuel equivalent（tonnes）")
    private BigDecimal lngFuelEquivalent = null;

    /**
     * Total F.O. consumption since FAOP（tonnes）
     */
    @Label(value="Total F.O. consumption since FAOP（tonnes）")
    @TableColumn
    @TableField("total_fo_faop")
    @ApiModelProperty(value = "Total F.O. consumption since FAOP（tonnes）")
    private BigDecimal totalFoFaop = null;

    /**
     * Wind - Direction
     */
    @Label(value="Wind - Direction")
    @TableColumn
    @TableField("wind_direction")
    @ApiModelProperty(value = "Wind - Direction")
    private String windDirection;

    /**
     * Wind - Force (Beaufort)
     */
    @Label(value="Wind - Force(Beaufort)")
    @TableColumn
    @TableField("wind_force")
    @ApiModelProperty(value = "Wind - Force (Beaufort)")
    private Integer windForce = null;

    /**
     * Sea state
     */
    @Label(value="Sea state")
    @TableColumn
    @TableField("sea_state")
    @ApiModelProperty(value = "sea_state")
    private Integer seaState = null;

    /**
     * Seawater Temp (°C)
     */
    @Label(value="Seawater Temp (°C)")
    @TableColumn
    @TableField("seawater_temp")
    @ApiModelProperty(value = "Seawater Temp (°C)")
    private Integer seawaterTemp = null;

    /**
     * Duration of weather > Beaufort 5
     */
    @Label(value="Duration of weather > Beaufort 5")
    @TableColumn
    @TableField("duration_weather")
    @ApiModelProperty(value = "Duration of weather > Beaufort 5")
    private String durationWeather;

    /**
     * Distance steamed in weather > Beaufort 5（N.Miles）
     */
    @Label(value="Distance steamed in weather > Beaufort 5（N.Miles）")
    @TableColumn
    @TableField("distance_steam_weather")
    @ApiModelProperty(value = "Distance steamed in weather > Beaufort 5（N.Miles）")
    private BigDecimal distanceSteamWeather = null;

    /**
     * Fuel consumed in weather > Beaufort 5（tonnes）
     */
    @Label(value="Fuel consumed in weather > Beaufort 5（tonnes）")
    @TableColumn
    @TableField("fuel_consume_weather")
    @ApiModelProperty(value = "Fuel consumed in weather > Beaufort 5（tonnes）")
    private BigDecimal fuelConsumeWeather = null;

    /**
     * Average LNG temp.- Tank # 1（Deg. C）
     */
    @Label(value="Average LNG temp.- Tank # 1（Deg. C）")
    @TableColumn
    @TableField("average_lng_tank")
    @ApiModelProperty(value = "Average LNG temp.- Tank # 1（Deg. C）")
    private String averageLngTank;

    /**
     * Average LNG temp.- Tank # 2（Deg. C）
     */
    @Label(value="Average LNG temp.- Tank # 2（Deg. C）")
    @TableColumn
    @TableField("average_lng_tank_deg")
    @ApiModelProperty(value = "Average LNG temp.- Tank # 2（Deg. C）")
    private BigDecimal averageLngTankDeg = null;

    /**
     * Average LNG temp.-Tank # 3（Deg. C）
     */
    @Label(value="Average LNG temp.-Tank # 3（Deg. C）")
    @TableColumn
    @TableField("average_lng_tank_degc")
    @ApiModelProperty(value = "Average LNG temp.-Tank # 3（Deg. C）")
    private BigDecimal averageLngTankDegc = null;

    /**
     * Average LNG temp.-Tank # 4（Deg. C）
     */
    @Label(value="Average LNG temp.-Tank # 4（Deg. C）")
    @TableColumn
    @TableField("average_lng_tank_dec")
    @ApiModelProperty(value = "Average LNG temp.-Tank # 4（Deg. C）")
    private BigDecimal averageLngTankDec = null;

    /**
     * Average cargo tank pressure - Tank # 1（kPa）
     */
    @Label(value="Average cargo tank pressure - Tank # 1（kPa）")
    @TableColumn
    @TableField("average_cargo_pre")
    @ApiModelProperty(value = "Average cargo tank pressure - Tank # 1（kPa）")
    private BigDecimal averageCargoPre = null;

    /**
     * Average cargo tank pressure - Tank # 2（kPa）
     */
    @Label(value="Average cargo tank pressure - Tank # 2（kPa）")
    @TableColumn
    @TableField("average_cargo_pres")
    @ApiModelProperty(value = "Average cargo tank pressure - Tank # 2（kPa）")
    private BigDecimal averageCargoPres = null;

    /**
     * Average cargo tank pressure - Tank # 3（kPa）
     */
    @Label(value="Average cargo tank pressure - Tank # 3（kPa）")
    @TableColumn
    @TableField("average_cargo_press")
    @ApiModelProperty(value = "Average cargo tank pressure - Tank # 3（kPa）")
    private BigDecimal averageCargoPress = null;

    /**
     * Average cargo tank pressure - Tank # 4（kPa）
     */
    @Label(value="Average cargo tank pressure - Tank # 4（kPa）")
    @TableColumn
    @TableField("average_cargo_pressure")
    @ApiModelProperty(value = "Average cargo tank pressure - Tank # 4（kPa）")
    private BigDecimal averageCargoPressure = null;

    /**
     * LNG ROB - Tank # 1(BY CTMS DATA)（m3）
     */
    @Label(value="LNG ROB - Tank # 1(BY CTMS DATA)（m³）")
    @TableColumn
    @TableField("lng_rob_ta")
    @ApiModelProperty(value = "LNG ROB - Tank # 1(BY CTMS DATA)（m3）")
    private BigDecimal lngRobTa = null;

    /**
     * LNG ROB -Tank # 2 (BY CTMS DATA)（m3）
     */
    @Label(value="LNG ROB -Tank # 2 (BY CTMS DATA)（m³）")
    @TableColumn
    @TableField("lng_rob_tan")
    @ApiModelProperty(value = "LNG ROB -Tank # 2 (BY CTMS DATA)（m3）")
    private String lngRobTan;

    /**
     * LNG ROB -Tank # 3 (BY CTMS DATA)（m3）
     */
    @Label(value="LNG ROB -Tank # 3 (BY CTMS DATA)（m³）")
    @TableColumn
    @TableField("lng_rob_tank")
    @ApiModelProperty(value = "LNG ROB -Tank # 3 (BY CTMS DATA)（m3）")
    private BigDecimal lngRobTank = null;

    /**
     * LNG ROB -Tank # 4 (BY CTMS DATA)（m3）
     */
    @Label(value="LNG ROB -Tank # 4 (BY CTMS DATA)（m³）")
    @TableColumn
    @TableField("lng_rob_ctms")
    @ApiModelProperty(value = "LNG ROB -Tank # 4 (BY CTMS DATA)（m3）")
    private BigDecimal lngRobCtms = null;

    /**
     * ETA NEXT PORT - Date/Time(LT)
     */
    @Label(value="ETA NEXT PORT - Date/Time(LT)")
    @TableColumn
    @TableField("eta_next_port")
    @ApiModelProperty(value = "ETA NEXT PORT - Date/Time(LT)")
    private String etaNextPort;

    /**
     * Deviations
     */
    @Label(value="Deviations")
    @TableColumn
    @TableField("deviations")
    @ApiModelProperty(value = "Deviations")
    private String deviations;

    /**
     * Physical condition of all crew onboard
     */
    @Label(value="Physical condition of all crew onboard")
    @TableColumn
    @TableField("physical_condition_crew")
    @ApiModelProperty(value = "Physical condition of all crew onboard")
    private String physicalConditionCrew;

    /**
     * LNG consumption for M/G（m3）
     */
    @Label(value="LNG consumption for M/G（m³）")
    @TableColumn
    @TableField("lng_mg")
    @ApiModelProperty(value = "LNG consumption for M/G（m3）")
    private BigDecimal lngMg = null;

    /**
     * LNG consumption for D/G（m3）
     */
    @Label(value="LNG consumption for D/G（m³）")
    @TableColumn
    @TableField("lng_dg")
    @ApiModelProperty(value = "LNG consumption for D/G（m3）")
    private BigDecimal lngDg = null;

    /**
     * LNG consumption for GCU（m3）
     */
    @Label(value="LNG consumption for GCU（m³）")
    @TableColumn
    @TableField("lng_gcu")
    @ApiModelProperty(value = "LNG consumption for GCU（m3）")
    private BigDecimal lngGcu = null;

    /**
     * BOG reliquefied by reliquefaction system（m3）
     */
    @Label(value="BOG reliquefied by reliquefaction system（m³）")
    @TableColumn
    @TableField("bog_reliquefie")
    @ApiModelProperty(value = "BOG reliquefied by reliquefaction system（m3）")
    private BigDecimal bogReliquefie = null;

    /**
     * Remarks
     */
    @Label(value="Remarks")
    @TableColumn
    @TableField("remarks")
    @ApiModelProperty(value = "Remarks")
    private String remarks;

    /**
     * 更新时间
     */
    @Label(value="更新时间")
    @TableColumn
    @TableField("update_date")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "更新时间")
    private Date updateDate;

    @Label(value="操作人")
    @TableColumn
    private String createBy;

    /**
     * 船舶IMO
     */
    @Label(value="IMO")
    @SearchItem
    @TableColumn
    @TableField("imo")
    @ApiModelProperty(value = "船舶IMO")
    private String imo;

    @Label(value="流程实例ID")
    private String processInstanceId;

    @Label(value="删除申请")
    private Integer delApply;

    @ApiModelProperty(value = "查询开始时间")
    @TableField(exist = false)
    private String shipReportDateStart;

    @ApiModelProperty(value = "查询结束时间")
    @TableField(exist = false)
    private String shipReportDateEnd;

    @ApiModelProperty(value = "分页查询页数")
    @TableField(exist = false)
    private Integer pageNum;

    @ApiModelProperty(value = "分页查询条数")
    @TableField(exist = false)
    private Integer pageSize;

    @Override
    public String getLabel() {
        return null;
    }

    @Override
    public String getValue() {
        return null;
    }
}
